package ar.edu.utn.frgp.labtec.actions.administracion.usuario;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.opensymphony.xwork2.Preparable;

import ar.edu.utn.frgp.labtec.actions.BaseAction;
import ar.edu.utn.frgp.labtec.entities.Departamento;
import ar.edu.utn.frgp.labtec.entities.Laboratorio;
import ar.edu.utn.frgp.labtec.entities.TipoPermisoEnum;
import ar.edu.utn.frgp.labtec.service.GestionDepartamentoService;
import ar.edu.utn.frgp.labtec.service.GestionLaboratorioService;


public class InitUsuarioAction extends BaseAction implements Preparable {
	
	protected List<Laboratorio> laboratorioList;
	protected Laboratorio laboratorio;
	protected String codigoLaboratorio;
	
	protected TipoPermisoEnum tipoPermiso;
	protected List<String> permisosCodigos;
	protected String tipoPermisoElegido;
	protected Map<Departamento,List<Laboratorio>> labXdepto;
	
	protected List<Departamento> departamentoList;
	protected Departamento departamento;
	protected String codigoDepartamento;
	
	
	private static final long serialVersionUID = 1L;
	
	
	@Override
	public String execute() throws Exception { 
		//campos sin validaciones de input
		
		return SUCCESS;
	}


	public List<Laboratorio> getLaboratorioList() {
		return laboratorioList;
	}


	public void setLaboratorioList(List<Laboratorio> laboratorioList) {
		this.laboratorioList = laboratorioList;
	}


	public Laboratorio getLaboratorio() {
		return laboratorio;
	}


	public void setLaboratorio(Laboratorio laboratorio) {
		this.laboratorio = laboratorio;
	}


	public TipoPermisoEnum getTipoPermiso() {
		return tipoPermiso;
	}


	public void setTipoPermiso(TipoPermisoEnum tipoPermiso) {
		this.tipoPermiso = tipoPermiso;
	}


	public List<String> getPermisosCodigos() {
		return permisosCodigos;
	}


	public void setPermisosCodigos(List<String> permisosCodigos) {
		this.permisosCodigos = permisosCodigos;
	}


	public String getTipoPermisoElegido() {
		return tipoPermisoElegido;
	}


	public void setTipoPermisoElegido(String tipoPermisoElegido) {
		this.tipoPermisoElegido = tipoPermisoElegido;
	}


	public void prepare() throws Exception {
		GestionDepartamentoService departamentoService = (GestionDepartamentoService) getContext()
				.getBean("gestionDepartamentoService");
		departamentoList = departamentoService.getDepartamentos();
		
		GestionLaboratorioService laboratorioService = (GestionLaboratorioService) getContext()
				.getBean("gestionLaboratorioService");
		laboratorioList = laboratorioService.getLaboratoriosXdepto(codigoDepartamento);
		
		labXdepto = new HashMap<Departamento, List<Laboratorio>>();
		for(Departamento depto : departamentoList){
			labXdepto.put(depto, laboratorioService.getLaboratoriosXdepto(depto.getCodDepto()));
		}
		
		permisosCodigos = new ArrayList<String>();
		permisosCodigos.add(TipoPermisoEnum.A.getCodigo());
		permisosCodigos.add(TipoPermisoEnum.L.getCodigo());

	}


	public List<Departamento> getDepartamentoList() {
		return departamentoList;
	}


	public void setDepartamentoList(List<Departamento> departamentoList) {
		this.departamentoList = departamentoList;
	}


	public Departamento getDepartamento() {
		return departamento;
	}


	public void setDepartamento(Departamento departamento) {
		this.departamento = departamento;
	}

	

	public Map<Departamento, List<Laboratorio>> getLabXdepto() {
		return labXdepto;
	}


	public void setLabXdepto(Map<Departamento, List<Laboratorio>> labXdepto) {
		this.labXdepto = labXdepto;
	}


	public String getCodigoLaboratorio() {
		return codigoLaboratorio;
	}


	public void setCodigoLaboratorio(String codigoLaboratorio) {
		this.codigoLaboratorio = codigoLaboratorio;
	}


	public String getCodigoDepartamento() {
		return codigoDepartamento;
	}


	public void setCodigoDepartamento(String codigoDepartamento) {
		this.codigoDepartamento = codigoDepartamento;
	}
	
	
	
}
